Introduction :
Le monde moderne est hyperconnecté, ce qui en fait une cible de choix pour les cybercriminels, car il représente un environnement global d'appareils auxquels ils souhaitent accéder. La sécurité d'un système embarqué est primordiale pour empêcher les pirates informatiques d'en prendre le contrôle, mais ces derniers pourraient également préparer une attaque plus dévastatrice contre les systèmes connectés au système. Les attaques à distance ne sont cependant pas leur seule arme ; les attaques locales sur le matériel physique constituent un autre moyen d'obtenir des informations sensibles. Ce type d'attaque inclut l'accès aux mots de passe d'authentification du système et même à la propriété intellectuelle du code source de l'application.

Cet article présente les concepts fondamentaux permettant de garantir une sécurité embarquée fiable et robuste au sein d'un microcontrôleur. Nous analyserons les principes de sécurité et étudierons en détail les surfaces d'attaque et les vecteurs utilisés par les acteurs malveillants.

Image 1 : Dans une installation IoT, lorsqu’un seul appareil est compromis, l’ensemble du système est vulnérable (source : STMicroelectronics)

L'importance de la sécurité ne doit pas être sous-estimée, quelle que soit la complexité du système embarqué. De plus, le problème ne se limite pas à la protection des clés cryptographiques ou du micrologiciel embarqué ; il concerne également la protection des données personnelles. Si un pirate informatique accède au micrologiciel d'un appareil, il peut en déchiffrer le code et, en comprenant son fonctionnement, potentiellement découvrir d'autres vulnérabilités et introduire du code malveillant. L'accès à un seul appareil non protégé au sein d'un système IoT peut compromettre l'ensemble de l'installation (voir figure 1).


éléments
à protéger. Les pirates informatiques ciblent trois aspects différents d'un objet connecté. Une cible est un objet connecté à protéger. Un actif est la partie spécifique de la cible nécessitant une protection. La figure 2 illustre les actifs à protéger et les risques associés à chaque cible en cas de compromission. Cette classification nous aide à choisir la méthode appropriée pour la mise en œuvre de techniques de sécurité embarquées.

Image 2 : La classification des objectifs, des actifs et des risques associés nous aide à déterminer les méthodes de sécurité à mettre en œuvre (source : STMicroelectronics)


Types d'attaques :
Les attaques contre les objets connectés peuvent provenir de diverses sources et se divisent généralement en attaques logicielles et matérielles. Les attaques logicielles peuvent se produire localement ou via un réseau, tandis que les attaques matérielles se subdivisent en invasives et non invasives. Une attaque non invasive se déroule localement et, dans certains cas, ne nécessite qu'une simple alimentation électrique du circuit imprimé de l'objet connecté.

En revanche, une attaque matérielle invasive consiste à obtenir un accès électrique et physique au microcontrôleur de l'appareil. Généralement, ce type d'attaque est le plus coûteux et requiert des connaissances spécialisées. La figure 3 illustre les trois types d'attaques mentionnés, ainsi qu'un résumé des techniques utilisées et des raisons qui pourraient motiver leur recours.

Image 3 : Types d’attaques et coûts associés (source : STMicroelectronics)

Les attaques logicielles sont généralement les plus fréquentes et consistent à exploiter des failles de sécurité du micrologiciel ou des vulnérabilités connues des protocoles via les canaux de communication de l'appareil. Ces attaques sont relativement peu coûteuses et faciles à mettre en œuvre, car elles sont exécutées à distance. De plus, après avoir découvert des vulnérabilités, les pirates informatiques peuvent partager ces informations au sein de leur communauté.

Sécurité en situation réelle :
Pour un fabricant d’appareils, il est essentiel de comprendre les facteurs de sécurité afin d’évaluer les mesures de protection nécessaires. Les trois exemples suivants illustrent certaines de ces mesures. La section suivante présente différentes fonctionnalités de sécurité et leur mise en œuvre.

Exemple 1 :
Prenons l’exemple d’une entreprise qui vend des micrologiciels et dont la principale source de revenus provient des licences. Ces micrologiciels constituent un actif de propriété intellectuelle (PI) précieux et doivent être protégés. Les clients utilisent ces micrologiciels conjointement avec le code de l’application. Il est donc essentiel pour l’entreprise d’isoler les micrologiciels du code du client. L’entreprise met régulièrement à jour les micrologiciels ; il est par conséquent indispensable de les installer et de les mettre à jour de manière sécurisée. Dans ce cas, les mesures de sécurité nécessaires comprennent notamment l’isolation, la protection de la PI du logiciel et la mise en place de procédures sécurisées pour l’installation et la mise à jour des micrologiciels.

Exemple 2 :
IndustrialAdvantage commercialise des équipements de contrôle de production haut de gamme et souhaite proposer des mises à jour de firmware à ses clients. L’une des conditions est que seul le firmware IndustrialAdvantage puisse être exécuté sur les équipements fournis. Le processus de mise à jour doit être rigoureux et inclure des contrôles d’authenticité. Pour garantir que l’équipement exécute uniquement le firmware IndustrialAdvantage, nous pouvons utiliser la fonction de démarrage sécurisé. La fonction d’installation et de mise à jour sécurisées nous permettra d’effectuer des contrôles d’intégrité et d’authenticité. 

Exemple 3 :
Consumer Tech fabrique des appareils destinés à collecter des données utilisateur au sein d’un système plus vaste. L’entreprise est rigoureuse et se conforme systématiquement aux réglementations relatives à la protection des données des consommateurs, telles que le RGPD. Consumer Tech souhaite également garantir le bon fonctionnement de l’appareil et l’utilisation exclusive de son propre micrologiciel. Lors des communications entre l’appareil et le système hôte, des données utilisateur peuvent potentiellement être exposées ; le recours à des techniques de chiffrement et à des systèmes d’identification et d’authentification des appareils permet de prévenir cette vulnérabilité. L’intégrité de la plateforme est protégée par une fonction de démarrage sécurisé.


Cadre de sécurité
: Pour les développeurs de systèmes embarqués, il est essentiel de disposer d’un ensemble complet et robuste de fonctionnalités de sécurité pour la plateforme microcontrôleur d’un dispositif. L’écosystème STM32Trust pour la gamme de microcontrôleurs STM32 de STMicroelectronics (voir figure 4) en est un exemple.

Image 4 : Écosystème de fonctionnalités de sécurité STM32Trust (source : STMicroelectronics)

Les fonctionnalités de sécurité STM32Trust sont utilisées dans les microcontrôleurs des séries STM32L4 et STM32L5, certifiés Arm PSA (niveau 2) et SESIP (niveau 3). Ces fonctionnalités peuvent être intégrées à la puce du microcontrôleur ou implémentées dans le firmware et sont associées au dispositif correspondant.

Dans le reste de l'article, nous analyserons deux fonctionnalités de sécurité essentielles incluses dans l'écosystème STM32Trust et que nous avons abordées dans les exemples précédents : le démarrage sécurisé (SB) et l'installation/mise à niveau sécurisée (SBSFU).


Démarrage sécurisé :
Le principe de base du démarrage sécurisé est le suivant : lors du redémarrage d’un appareil, un code de démarrage sécurisé s’exécute pour vérifier l’authenticité du micrologiciel avant d’autoriser son démarrage. Cette fonction repose sur deux paramètres. Premièrement, le code de démarrage sécurisé est le seul code exécuté pendant le redémarrage. Deuxièmement, ce code est immuable ; autrement dit, il ne peut être modifié d’aucune façon. L’adresse du code de démarrage est également unique, empêchant ainsi l’accès à une autre adresse de micrologiciel lors du redémarrage. La combinaison de ces deux principes crée une racine de confiance pour l’appareil (voir figure 5).

Figure 5 : Principe de base de la fonction de démarrage sécurisé (source : STMicroelectronics)

Des contrôles d'intégrité et d'authenticité sont effectués sur le micrologiciel de l'application et comparés à une signature. Le contrôle d'intégrité compare une fonction de hachage (ou condensé) générée à partir du code de l'application avec une référence fournie. Le contrôle d'authenticité compare cette fonction de hachage avec une signature calculée à partir de la valeur de hachage générée et d'une clé privée. La signature est ensuite vérifiée à l'aide d'une clé publique associée. La valeur de la signature et la valeur de hachage de référence doivent être fournies avec le micrologiciel.

Généralement, ces données sont stockées dans un conteneur appelé métadonnées ou en-tête (voir figure 6). Du fait de leur méthode de génération, les métadonnées ne nécessitent pas de chiffrement. En présence d'un micrologiciel malveillant, il serait impossible de faire correspondre le hachage du micrologiciel à la référence. La figure 6 illustre la construction de la signature des métadonnées à partir de la clé privée et du condensé du micrologiciel grâce à la fonction de hachage.

Image6 : Génération de la signature des métadonnées (source : STMicroelectronics)

Dans la figure 7, le code de démarrage sécurisé utilise la signature des métadonnées pour confirmer l'authenticité et l'intégrité du micrologiciel de l'application. Si la vérification de la signature confirme la validité du micrologiciel, le processus de démarrage lance le chargement du code de l'application. En cas de divergence entre le micrologiciel de l'application et la signature, le processus de démarrage échoue.

Image7 : Validation du firmware de l’application par signature des métadonnées avant le chargement de l’application (source : STMicroelectronics)


Mise à jour sécurisée du firmware :
Les étapes principales d’une mise à jour du firmware sont :
la création de la mise à jour du firmware de l’application,
la génération des métadonnées associées et
sa transmission au périphérique cible.
La fonction de démarrage sécurisé utilise ces métadonnées pour vérifier l’intégrité et l’authenticité du firmware de l’application.
Si la vérification est concluante, le processus de démarrage sécurisé installe le nouveau firmware.

La nouvelle signature de métadonnées est créée selon la même technique que pour le démarrage sécurisé. Sur de nombreux appareils IoT/IIoT connectés à distance, la méthode de transfert la plus simple est la mise à jour OTA (Over-The-Air). Les appareils sans connexion Internet nécessitent une connexion locale, telle qu'UART, SPI, USB ou une carte microSD. Le nouveau firmware d'application est installé dans la mémoire flash de l'appareil cible à l'aide d'un chargeur, généralement intégré au code de démarrage sécurisé ou au firmware d'application. Le nouveau firmware doit être installé localement pendant que le firmware actuel est en cours d'exécution.

La figure 8 illustre le processus de mise à jour du micrologiciel à distance. Deux emplacements mémoire sont nécessaires : un pour le micrologiciel actuel et un pour la nouvelle version. 

Image 8 : Exemple de mise à jour du firmware à distance (source : STMicroelectronics)

La dernière étape de la mise à jour consiste à vérifier le nouveau micrologiciel de l'application (voir image 9). Si la vérification des métadonnées est concluante, le micrologiciel actuel est remplacé par le nouveau. La mise à jour est alors terminée.


Conclusion :
La sécurité embarquée des appareils est indispensable. Tous les appareils doivent être protégés contre les attaques malveillantes et les vulnérabilités potentielles. La sécurité des appareils commence dès le démarrage ; il est donc essentiel d’intégrer des fonctionnalités de sécurité telles que le démarrage sécurisé et l’installation/la mise à jour sécurisée du firmware. STM32Trust offre toutes les fonctionnalités de sécurité dont un développeur de systèmes embarqués peut avoir besoin pour protéger ses appareils et se conformer aux réglementations en vigueur.

Article fourni par Mouser Electronics